package com.sora.pipeline.domain.dto;

import jakarta.validation.constraints.*;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 整改任务完成请求DTO
 * 
 * @author system
 * @since 2025-01-20
 */
@Data
public class RemedyTaskCompleteRequest {
    
    /**
     * 完成时间
     */
    @NotNull(message = "完成时间不能为空")
    private LocalDateTime completeTime;
    
    /**
     * 完成进度
     */
    @NotNull(message = "完成进度不能为空")
    @Min(value = 0, message = "完成进度不能小于0")
    @Max(value = 100, message = "完成进度不能大于100")
    private Integer progress;
    
    /**
     * 完成描述
     */
    @Size(max = 500, message = "完成描述长度不能超过500字符")
    private String description;
    
    /**
     * 图片JSON
     */
    private String imagesJson;
    
    /**
     * 材料列表
     */
    private List<MaterialInfo> materials;
    
    /**
     * 材料信息
     */
    @Data
    public static class MaterialInfo {
        /**
         * 材料名称
         */
        @NotBlank(message = "材料名称不能为空")
        @Size(max = 200, message = "材料名称长度不能超过200字符")
        private String name;
        
        /**
         * 数量
         */
        @DecimalMin(value = "0.01", message = "数量必须大于0")
        private java.math.BigDecimal quantity;
        
        /**
         * 单位
         */
        @Size(max = 50, message = "单位长度不能超过50字符")
        private String unit;
        
        /**
         * 备注
         */
        @Size(max = 255, message = "备注长度不能超过255字符")
        private String note;
    }
}

